<?php
/**
 * Created by PhpStorm.
 * User: wangguodong
 * Date: 17/12/28
 * Time: 下午8:43
 */

/*
 *1. 可变变量:可以将变量的值作为一个变量的名称,非常灵活
 */

$txt = 'abc';
$$txt = "hello"; //等于 $abc = 'hello',这就是将变量$txt的值abc作为新的变量$abc并且赋值为hello
echo "$abc = ${$txt} = hello<br>";
//比如如果需要定义多个变量设置初值,很多语言不得不写很多声明赋值代码,或者使用数组来实现.
$vars = ['a' => '1','b'=>'2','c'=>'3','d'=>'4'];
foreach ($vars as $key => $value){
    ${$key} = $value;
}
echo $a.$b.$c.$d."<br>";//显示1234

/*
 * 2.可变函数
 */

function getName(){
    return 'func name'.'<br>';
}
function getGrade(){
    return "func grade"."<br>";
}
$func = "getName";
echo $func();
$func = "getGrade";
echo $func();

/*
 * 可变参数,用三个...实现
 */
//这个要php5.6以后
function sum (...$input){
    $s = 0;
    foreach ($input as $value) {
        $s+=$value;
    }
    return $s;
}
echo sum(1,2,3);
function sum2(){
    $arg_num = func_num_args();
    $sum = 0;
    if($arg_num == 0){
        return $sum;
    }else{
        for($i = 0;$i<$arg_num;$i++){
            $sum += func_get_arg($i);
        }
        return $sum;
    }
}
echo sum2(1,2,3);

